import { usePermissionStore } from '@/store';

const directiveRole = (el, binding) => {
    // 获取指令传递过来的数据
    const { value } = binding;
    const permission = usePermissionStore();
    // 获取vuex中的角色信息
    const roles = permission.roles;
    // 判断指令是否传递,传递的值是否是数组,是否大于0
    if (value && Array.isArray(value) && value.length > 0) {
        /**
         *  some: 用于检测数组中的元素是否满足指定条件
         */

        const hasRole = roles.some((item) => {
            /**
             *  includes: 用于判断字符串是否包含某个指定的子字符串
             */
            return value.includes(item);
        });
        // 如果没有该角色
        if (!hasRole) {
            // 把对应的元素删掉
            el.parentNode.removeChild(el);
        }
    } else {
        throw new Error(`请设置${value}对应的角色标签`);
    }
};

const directivePerms = (el, binding) => {
    // 获取指令传递过来的数据
    const { value } = binding;
    const permission = usePermissionStore();
    // 获取vuex中的角色信息
    const permissions = permission.perms;
    console.log('指令', value, permissions);
    // 判断指令是否传递,传递的值是否是数组,是否大于0
    if (value && Array.isArray(value) && value.length > 0) {
        /**
         *  some: 用于检测数组中的元素是否满足指定条件
         */

        const hasPerm = permissions.some((item) => value.includes(item));
        // 如果没有该角色
        if (!hasPerm) {
            if (el.parentNode) {
                // 把对应的元素删掉
                el.parentNode.removeChild(el);
            }
        }
    } else {
        throw new Error(`请设置${value}对应的权限标签`);
    }
};

export { directivePerms, directiveRole };
